package org.abc.fund.repository.factorRepository;

import org.abc.fund.entity.factorEntity.DataSourceConfig;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Optional;

/**
 * 数据源配置Repository
 */
@Repository
public interface DataSourceConfigRepository extends JpaRepository<DataSourceConfig, Long> {

    /**
     * 根据数据源名称查找
     */
    Optional<DataSourceConfig> findByDataSourceName(String dataSourceName);

    /**
     * 根据数据源类型查找
     */
    List<DataSourceConfig> findByDataSourceType(DataSourceConfig.DataSourceType dataSourceType);

    /**
     * 根据是否启用查找
     */
    List<DataSourceConfig> findByEnabled(Boolean enabled);

    /**
     * 根据数据源类型和是否启用查找
     */
    List<DataSourceConfig> findByDataSourceTypeAndEnabled(DataSourceConfig.DataSourceType dataSourceType, Boolean enabled);

    /**
     * 检查数据源名称是否存在
     */
    boolean existsByDataSourceName(String dataSourceName);

    /**
     * 查找所有启用的数据源配置
     */
    List<DataSourceConfig> findByEnabledTrue();

    /**
     * 统计启用的数据源配置数量
     */
    long countByEnabledTrue();
}